// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
  switch (event.module) {
    case 'UserAddress': {
      return UserAddress(event)
    }
    case 'User': {
      return User(event)
    }
    case 'Product': {
      return Product(event)
    }
    case 'Order':{
      return Order(event)
    }
    default: {
      return '模块不存在'
    }
  }
}

//地址管理
async function UserAddress(event){
  try {
    switch(event.action){
      case 'add':{
        return await db.collection('UserAddress').add({data:event.params})
      }
      case 'delete': {
        return await db.collection('UserAddress').where(event.map).remove();
      }
      case 'update': {
        return await db.collection('UserAddress').doc(event.id).update({ data: event.params });
      }
      case 'query': {
        let limit = event.num || 1000 ;
        return await db.collection('UserAddress').where(event.map).limit(limit).get();
      }
      default: {
        return '方法不存在'
      }
    }   
  } catch (e) {
    return e;
  }
}

//用户管理
async function User(event) {
  try {
    switch (event.action) {
      case 'add': {
        return await db.collection('User').add({ data: event.params })
      }
      case 'delete': {
        return await db.collection('User').where(event.map).remove();
      }
      case 'update': {
        return await db.collection('User').doc(event.id).update({ data: event.params });
      }
      case 'query': {
        let limit = event.num || 1000;
        return await db.collection('User').where(event.map).limit(limit).get();
      }
      default: {
        return '方法不存在'
      }
    }
  } catch (e) {
    return e;
  }
}

//商品管理
async function Product(event){
  try {
    switch(event.action){
      case 'add':{
        return await db.collection('Product').add({data:event.params})
      }
      case 'delete': {
        return await db.collection('Product').where(event.map).remove();
      }
      case 'update': {
        return await db.collection('Product').doc(event.id).update({ data: event.params });
      }
      case 'query': {
        let limit = event.num || 1000 ;
        return await db.collection('Product').where(event.map).limit(limit).get();
      }
      default: {
        return '方法不存在'
      }
    }   
  } catch (e) {
    return e;
  }
}

//订单管理
async function Order(event){
  try {
    switch(event.action){
      case 'add':{
        return await db.collection('Order').add({data:event.params})
      }
      case 'delete': {
        return await db.collection('Order').where(event.map).remove();
      }
      case 'update': {
        return await db.collection('Order').doc(event.id).update({ data: event.params });
      }
      case 'query': {
        let limit = event.num || 1000 ;
        return await db.collection('Order').where(event.map).limit(limit).orderBy('CreateTime','desc').get();
      }
      default: {
        return '方法不存在'
      }
    }   
  } catch (e) {
    return e;
  }
}
